/**
 * 在express 中使用 Session 认证
 **/

const express = require("express");
const app = express();

const session = require("express-session");
app.use(
  session({
    secret: "demo",
    resave: false,
    saveUninitialized: true,
  })
);

app.use(express.urlencoded({ extended: false }));

// 登录
app.post("/login", (req, res) => {
  // 判断账号密码
  if (req.body.username != "admin" || req.body.password != "123456") {
    return res.send({ code: 200, msg: "登录失败" });
  }

  // 将用户信息保存到Session中
  // 注意 ： 只有配置了 express-session 这个中间件之后，才能通过 req 点出来 session 这个属性
  req.session.user = req.body; //用户信息
  req.session.islogin = true; //用户登录状态

  res.send({ code: 200, msg: "登录成功" });
});

// 退出登录
app.post("/outLogin", (req, res) => {
  if (!req.session.islogin) {
    return res.send({ code: 200, msg: "请登录" });
  }

  //清空当前用户 session 保存的信息
  req.session.destroy();
  res.send({ code: 200, msg: "退出成功" });
});

// 获取用户姓名
app.get("/getUser", (req, res) => {
  // 判断用户是否登录
  if (!req.session.islogin) {
    return res.send({ code: 200, msg: "请登录" });
  }

  res.send({
    code: 200,
    msg: "success",
    username: req.session.user.username,
    password: req.session.user.password,
  });
});

app.listen(80, () => {
  console.log("服务启动成功");
});
